// 引入API模块
const { api } = require('../../utils/api');

// 工具函数：格式化时间
function formatDateTime(dateStr) {
  if (!dateStr) return '';
  return dateStr.replace('T', ' ').slice(0, 16);
}

Page({
  data: {
    userInfo: {
      avatarUrl: "/utils/images/avatar-cartoon.png",
      nickName: "微信用户",
      points: 1200
    },
    menuItems: [
      { id: 1, icon: "/utils/images/icon-certification.png", title: "学习认证中心", url: "/pages/user/certification" },
      { id: 2, icon: "/utils/images/icon-collection.png", title: "我的收藏", action: "openCollection" },
      { id: 3, icon: "/utils/images/icon-address.png", title: "地址管理", url: "/pages/user/address/address" },
      { id: 4, icon: "/utils/images/icon-points.png", title: "我的积分与等级", url: "/pages/user/points" }
    ],
    // 收藏相关
    collections: [],
    showCollectionModal: false,
    // 名片分享相关
    shareCardPath: ''
  },
  
  onLoad() {
    // 获取存储的用户信息
    const userInfo = wx.getStorageSync('userInfo');
    if (userInfo) {
      this.setData({
        userInfo: {
          ...userInfo,
          points: userInfo.points || this.data.userInfo.points
        }
      });
    }
  },
  
  handleLogin() {
    wx.getUserProfile({
      desc: "获取头像昵称",
      success: (res) => {
        this.setData({
          userInfo: {
            ...res.userInfo,
            points: this.data.userInfo.points
          }
        });
      }
    });
  },
  
  navigateTo(e) {
    const item = this.data.menuItems[e.currentTarget.dataset.index];
    
    // 如果是收藏按钮
    if (item.action === "openCollection") {
      this.openCollectionModal();
      return;
    }
    
    // 常规导航
    if (item.url) {
      wx.navigateTo({ url: item.url });
    }
  },
  
  // 打开收藏弹窗
  async openCollectionModal() {
    wx.showLoading({ title: '加载中' });
    
    try {
      const res = await api.getCollections();
      if (res.code === 200) {
        const collections = (res.data || []).map(item => ({
          ...item,
          createTime: formatDateTime(item.createTime)
        }));
        
        this.setData({
          collections,
          showCollectionModal: true
        });
      } else {
        wx.showToast({
          title: res.message || '获取收藏失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('获取收藏失败:', error);
      wx.showToast({
        title: '获取收藏失败，请重试',
        icon: 'none'
      });
    } finally {
      wx.hideLoading();
    }
  },
  
  // 关闭收藏弹窗
  closeCollectionModal() {
    this.setData({
      showCollectionModal: false
    });
  },
  
  // 选择收藏并跳转
  onCollectionSelect(e) {
    const collection = e.currentTarget.dataset.item;
    this.setData({ showCollectionModal: false });
    
    // 跳转到周刊详情页
    wx.navigateTo({
      url: `/pages/magazine/detail?data=${encodeURIComponent(JSON.stringify(collection))}`
    });
  },

  // 名片分享功能
  shareCard() {
    wx.showLoading({
      title: '生成名片中...'
    });

    try {
      // 获取存储的完整用户信息
      const storedUserInfo = wx.getStorageSync('userInfo') || {};
      // 将存储的用户信息与当前数据合并，确保使用最新的数据
      const userInfo = {
        ...this.data.userInfo,
        ...storedUserInfo
      };
      
      console.log('准备生成名片，用户信息:', userInfo);
      
      // 先下载头像
      this.downloadAvatarThenDraw(userInfo);
    } catch (error) {
      console.error('生成名片失败:', error);
      wx.hideLoading();
      wx.showToast({
        title: '生成名片失败',
        icon: 'none'
      });
    }
  },

  // 下载头像然后绘制Canvas
  downloadAvatarThenDraw(userInfo) {
    // 默认使用本地头像
    let avatarPath = '/utils/images/avatar-default.png';
    
    // 如果用户有自己的头像且是网络图片，先下载
    if (userInfo.avatarUrl && userInfo.avatarUrl.startsWith('http')) {
      wx.downloadFile({
        url: userInfo.avatarUrl,
        success: (res) => {
          if (res.statusCode === 200) {
            // 下载成功后使用临时路径绘制
            this.drawShareCard(userInfo, res.tempFilePath);
          } else {
            // 下载失败使用默认头像
            this.drawShareCard(userInfo, avatarPath);
          }
        },
        fail: (err) => {
          console.error('下载头像失败:', err);
          // 下载失败使用默认头像
          this.drawShareCard(userInfo, avatarPath);
        }
      });
    } else {
      // 本地头像或没有头像，直接绘制
      this.drawShareCard(userInfo, avatarPath);
    }
  },

  // 绘制分享卡片
  drawShareCard(userInfo, avatarPath) {
    try {
      console.log('开始绘制名片, 头像路径:', avatarPath);
      
      // 创建画布
      const ctx = wx.createCanvasContext('shareCardCanvas');
      const canvasWidth = 600;
      const canvasHeight = 1000; // 增加高度以容纳更多信息
      
      // 绘制背景
      ctx.setFillStyle('#fff8e7');
      ctx.fillRect(0, 0, canvasWidth, canvasHeight);
      
      // 绘制顶部边框装饰
      ctx.setFillStyle('#f3e1c8');
      ctx.fillRect(0, 0, canvasWidth, 20);
      
      // 绘制Logo和小程序名称
      ctx.setFillStyle('#4b3e2e');
      ctx.setFontSize(36);
      ctx.fillText('宏益微信小程序', 40, 80);
      
      // 绘制分隔线
      ctx.setStrokeStyle('#e6d8c4');
      ctx.beginPath();
      ctx.moveTo(40, 120);
      ctx.lineTo(canvasWidth - 40, 120);
      ctx.stroke();
      
      // 绘制头像
      ctx.save();
      ctx.beginPath();
      ctx.arc(120, 230, 80, 0, Math.PI * 2, false);
      ctx.clip();
      // 使用传入的头像路径
      ctx.drawImage(avatarPath, 40, 150, 160, 160);
      ctx.restore();
      
      // 绘制用户信息
      ctx.setFontSize(40);
      ctx.setFillStyle('#4b3e2e');
      ctx.fillText(userInfo.nickName || '微信用户', 240, 200);
      
      // 绘制积分信息
      ctx.setFontSize(28);
      ctx.setFillStyle('#6b5b46');
      ctx.fillText(`积分: ${userInfo.points || 0}`, 240, 250);

      // 获取学员编号（优先使用id，其次是userId，再次是openid）
      const studentId = userInfo.id || userInfo.userId || userInfo.openid || '未登录用户';
      ctx.fillText(`学员编号: ${studentId}`, 40, 350);
      
      // 显示手机号
      if (userInfo.phone) {
        ctx.fillText(`联系电话: ${userInfo.phone}`, 40, 400);
      }
      
      // 显示地址
      if (userInfo.address) {
        ctx.fillText(`地址: ${userInfo.address}`, 40, 450);
      }
      
      // 绘制底部信息
      ctx.setFontSize(24);
      ctx.setFillStyle('#6b5b46');
      ctx.fillText('扫描下方小程序码加入我们', 40, canvasHeight - 80);
      
      console.log('Canvas绘制完成，准备转换为图片');
      // 完成绘制
      ctx.draw(true, () => {
        setTimeout(() => {
          console.log('开始转换Canvas为图片');
          // 将Canvas转换为图片
          wx.canvasToTempFilePath({
            x: 0,
            y: 0,
            width: canvasWidth,
            height: canvasHeight,
            destWidth: canvasWidth * 2,
            destHeight: canvasHeight * 2,
            canvasId: 'shareCardCanvas',
            success: (res) => {
              console.log('转换成功，图片路径:', res.tempFilePath);
              this.setData({
                shareCardPath: res.tempFilePath
              });
              
              // 显示分享操作菜单
              wx.hideLoading();
              wx.showShareImageMenu({
                path: res.tempFilePath,
                success: () => {
                  wx.showToast({
                    title: '分享成功',
                    icon: 'success'
                  });
                },
                fail: (err) => {
                  console.error('分享失败:', err);
                  wx.showToast({
                    title: '分享失败: ' + (err.errMsg || '未知错误'),
                    icon: 'none'
                  });
                }
              });
            },
            fail: (err) => {
              console.error('生成图片失败:', err);
              wx.hideLoading();
              wx.showToast({
                title: '生成名片失败: ' + (err.errMsg || '未知错误'),
                icon: 'none'
              });
            }
          }, this);
        }, 500); // 延长延迟时间确保画布已绘制完成
      });
      
    } catch (error) {
      console.error('绘制名片错误:', error);
      wx.hideLoading();
      wx.showToast({
        title: '生成名片失败',
        icon: 'none'
      });
    }
  },
  
  // 页面分享功能
  onShareAppMessage() {
    return {
      title: `${this.data.userInfo.nickName || '微信用户'}的名片`,
      path: '/pages/user/index',
      imageUrl: this.data.shareCardPath || '/utils/images/share-default.png'
    };
  }
});